﻿// *----------------------------------------------------------------
// Copyright (C) 2017 通通优品
// 版权所有。
// 
// 类名：IUnitOfWorkDefaultOptions.cs
// 功能描述：TongTongMall
// 
// Create User：jym 2017/02/09
// 
// Edit User：UserName,EditTime
// Describe：Describe
// ----------------------------------------------------------------*/
using System;
using System.Collections.Generic;
using System.Transactions;

namespace TongTongMall.Domain.Uow
{
    public interface IUnitOfWorkDefaultOptions
    {
        /// <summary>
        /// 分布式事务配置项.
        /// </summary>
        TransactionScopeOption Scope { get; set; }

        /// <summary>
        /// 是否启用工作单元的事务模式
        /// </summary>
        bool IsTransactional { get; set; }

        /// <summary>
        /// 设置超时时间
        /// </summary>
        TimeSpan? Timeout { get; set; }

        /// <summary>
        ///设置事务的操作等级，例如可读取脏数据等
        /// </summary>
        IsolationLevel? IsolationLevel { get; set; }

        /// <summary>
        /// 工作单元的生命周期内需要使用的过滤器
        /// </summary>
        IReadOnlyList<DataFilterConfiguration> Filters { get; }

        /// <summary>
        /// 注册一个过滤器
        /// </summary>
        /// <param name="filterName"></param>
        /// <param name="isEnabledByDefault"></param>
        void RegisterFilter(string filterName, bool isEnabledByDefault);

        /// <summary>
        /// 释放一个过滤器
        /// </summary>
        /// <param name="filterName"></param>
        /// <param name="isEnabledByDefault"></param>
        void OverrideFilter(string filterName, bool isEnabledByDefault);
    }
}
